5.3 循环语句

循环语句一般用于遍历数组、切片、MAP等,同时也用于一些循环逻辑执行。

Go语言的循环与其他语言差不多,只不过都是通过for关键字来实现。

在前面关于数组、切片的学习中我们已经讲解过了for循环的使用,本节我们将进行进一步的讲解。

本节代码存放目录为 lesson15

遍历

Go语言中,对于数组、切片、MAP的遍历我们可以使用for循环实现。如下所示:

numbers := []int{1, 2, 3, 4, 5, 6, 7}

for i, v := range numbers {
    fmt.Printf("index-> %d, value-> %d\n", i, v)
}

在上面的代码中,i代表index,也就是索引;v代表value,也就是索引所对应的value值。

我们还可以将indexvalue省略,不进行取值。如下所示:

for i, _ := range numbers {
    fmt.Printf("index-> %d\n", i)
}

for _, v := range numbers {
    fmt.Printf("value-> %d\n", v)
}

除了使用上面的for range方法,我们还可以使用for i...方式。代码如下所示:

for i := 0; i < len(numbers); i++ {
    fmt.Printf("index-> %d, value-> %d\n", i, numbers[i])
}

for i...还可以这样使用:

for i := 0; i < 10; i++ {
    fmt.Printf("第%d次循环\n", i+1)
}

上面的代码形式,我们一般用于一些需要循环多次处理的业务逻辑,这时候可以使用上面的方式来进行实现。

循环

上面我们讲到了for rangefor i...的基本使用,除了上面的使用方法,我们在实际开发中,还会用来做一些循环及流程控制。

比如需要进行一个死循环,代码如下所示:

j := 1
for {
    fmt.Printf("死循环第%d次\n", j)
    time.Sleep(time.Duration(1) * time.Second)
    j++
}

在上面的代码中,我们使用for {}实现了一个死循环,并且每间隔1秒钟输出一次循环次数信息。

里面的代码会一直执行,如果我们要在执行到第10次的时候退出,那么我们可以使用break。代码如下所示:

j := 1
for {
    fmt.Printf("死循环第%d次\n", j)
    time.Sleep(time.Duration(1) * time.Second)
    j++

    if j == 10 {
        fmt.Println("死循环退出")
        break
    }
}

在上面的代码中,我们使用break来退出了循环。

Go语言中,所有的循环都是可以通过break来进行退出的。

同时Go语言还具备另一个内容,就是goto。这个关键字的作用是:跳转到指定地方开始执行。

例如我现在的需求是:执行到第10次的时候重新从头执行。那么代码可以这样写:

loop:
    x := 1
    for {
        fmt.Printf("死循环第%d次\n", x)
        time.Sleep(time.Duration(1) * time.Second)
        x++

        if x == 10 {
            fmt.Println("死循环从头开始执行")
            goto loop
        }
    }

在上面的代码中,我们首先定义了一个loop,定义为其他的也可以,比如loop1loop2什么的。

loop在这里是作为一个标识使用,标识从loop往下的代码段。

for循环中,我们使用到了goto loop,这句代码就表示程序跳转到loop重新往下执行。

for循环中还有另一个概念,就是continue,顾名思义,就是继续的意思。

Go语言中就表示跳过这次循环,继续执行下一次。代码如下所示:

for i := 0; i < 10; i++ {
    if i+1 == 5 {
        fmt.Printf("跳过第%d次循环\n", i+1)
        continue
    }
    fmt.Printf("第%d次循环\n", i+1)
}

在上面的代码中,当i+1 == 5的时候,我们使用了continue关键字。

那么程序就不会再继续往下执行,也就是不会执行到fmt.Printf("第%d次循环\n", i+1)

这在我们实际项目中用于一些条件流程判断是比较有用的。

小结

Go语言的循环比较简单,基本会用到的也就是它的基础知识。

关于本节的知识点总结如下:

  • 可以使用for range格式进行循环遍历

  • 可以使用for i...格式进行循环遍历

  • 可以使用for {}进行循环控制

  • 可以使用break跳出循环

  • 可以使用goto关键字跳转到指定位置开始执行

  • 可以使用continue跳过此次循环,直接进入下一次循环

results matching ""

    No results matching ""